package cn.coisini.model.common.annotation;

import cn.coisini.model.common.aspect.StateValidationAspect;
import jakarta.validation.Constraint;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

/**
 * @author xiangshaw
 * Description: 自定义注解
 */
// 指定为注解信息
@Documented
// 指定注解作用在字段上（属性 FIELD）
@Target({FIELD})
// 指定注解保留在运行时
@Retention(RUNTIME)
// 指定验证规则的类
@Constraint(validatedBy = { StateValidationAspect.class })
public @interface State {
    // 提示信息
    String message() default "文章状态值不合法";
    // 指定分组
    Class<?>[] groups() default {};
    // 负载（获取State注解附加信息）
    Class<?>[] payload() default {};
}
